AbstractStorage   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 22
dl 0
loc 27
rs 10
c 0
b 0
f 0

4 Functions

Rating   Name   Duplication   Size   Complexity  
A subscribeUserDataFromStorageByFirebaseUser 0 4 1
A updateStoredDataByUser 0 2 1
A updateStoredDataByFirebaseUser 0 4 1
A getNewUser 0 6 1
1
import { AngularFireAuth } from "@angular/fire/auth";
2
import { User as FirebaseUser } from "firebase";
3
import { Observable } from "rxjs";
4
import { UniFirebaseLoginConfig } from "../config/uni-firebase-login-config";
5
import { UniFirebaseLoginConfigProvider } from "../config/uni-firebase-login-config-provider";
6
import { UserModel } from "../model/user-model";
7
import { IStorageProvider } from "./i-storage-provider";
8
9
export abstract class AbstractStorage<User extends UserModel = UserModel>
10
  implements IStorageProvider<User> {
11
  protected config: UniFirebaseLoginConfig;
12
13
  protected constructor(
14
    protected angularFireAuth: AngularFireAuth,
15
    configProvider: UniFirebaseLoginConfigProvider,
16
  ) {
17
    this.config = configProvider.config;
18
  }
19
20
  public abstract async updateStoredDataByUser(user: User): Promise<void>;
21
22
  public abstract async updateStoredDataByFirebaseUser(
23
    firebaseUser: FirebaseUser,
24
  ): Promise<void>;
25
26
  public abstract subscribeUserDataFromStorageByFirebaseUser(
27
    user: FirebaseUser,
28
  ): Observable<User | null>;
29
30
  /**
31
   * Override this method if you want to use custom model class
32
   */
33
  protected getNewUser(): User {
34
    return this.config.userFactoryFunc() as User;
35
  }
36
}
37